package com.gl.glcourses.model
{
	import com.gl.glcourses.events.GLCoursesEvent;
	import com.gl.glcourses.model.constants.Constants;
	import com.gl.glcourses.vos.EdicionCurso;
	import com.gl.glcourses.vos.EstadoParticipante;
	import com.gl.glcourses.vos.Participante;
	import com.gl.glcourses.vos.TipoParticipante;
	
	import flash.events.MouseEvent;
	
	import mx.collections.ArrayCollection;
	import mx.controls.Alert;
	import mx.controls.DataGrid;
	
	import org.flexunit.flexui.controls.left.events.SearchBarEvent;
	
	public class PresentismoPanelModel extends PresentationModel
	{
		/*[Bindable]
		public var edicionCursoSeleccionado:EdicionCurso;*/
		private var _edicionCursoSeleccionado:EdicionCurso;
		[Bindable]
		public var tituloSesiones:String = "";
		
		private var presentismoEdicionCurso:ArrayCollection = new ArrayCollection();
		
		[Bindable]
		public function get edicionCursoSeleccionado():EdicionCurso
		{
			return _edicionCursoSeleccionado;
		}
		
		public function set edicionCursoSeleccionado(value:EdicionCurso):void
		{
			_edicionCursoSeleccionado = value as EdicionCurso;
			
			edicionCursoSeleccionado.participantes.filterFunction = participanteFilterFunction;
			edicionCursoSeleccionado.participantes.refresh();
			
		}
		
		public function participanteFilterFunction(obj:Object):Boolean{
			var participante:Participante;
			if( obj is Participante )
			{
				var parti:Participante = obj as Participante;
				
				// Los participante que no han sido aceptado, NO PERMITIR CARARLE ASISTENCIA 
				if( parti.estadoParticipante.localeCompare(EstadoParticipante.PENDIENTE_APROBACION) == 0 
					|| parti.estadoParticipante.localeCompare(EstadoParticipante.RECHAZADO) == 0)
				{	
					return false;
				}
				if( parti.tipoParticipante.localeCompare(TipoParticipante.DOCENTE) == 0 
					|| parti.tipoParticipante.localeCompare(TipoParticipante.RRHH) == 0)
				{	
					return false;
				}
			}	
			return true;	
		}
		public function guardarPresentismo(eventMouse:MouseEvent):void
		{
			presentismoEdicionCurso.removeAll();
			for each( var participante:Participante in edicionCursoSeleccionado.participantes )
			{ 
				presentismoEdicionCurso.addAll(participante.estadoPresentismo);
			}
			var event:GLCoursesEvent= new GLCoursesEvent( GLCoursesEvent.GUARDAR_PRESENTISMO_PARTICIPANTE );
			event.presentismosParticipantes = presentismoEdicionCurso;
			dispatch( event );
			
			limpiar();
		}
		
		public function limpiar():void
		{
			// TODO: tener en cuenta que si pone dos veces seguidas save, guarda mal, porque vuelve a crear objetos si antes no existian
			// Parece que ahora anda mejor, hay que hacerles pruebas
			//mejorar el limpiar
			var event:GLCoursesEvent = new GLCoursesEvent( GLCoursesEvent.PREPARAR_CARGAR_PRESENTISMO);
			event.edicionCursoSeleccionado = edicionCursoSeleccionado as EdicionCurso;
			dispatch( event );
		//	edicionCursoSeleccionado = new EdicionCurso();
		}
	}
	
}